Tutorial: Graph Tutorial

Graph Tutorial

Generating a XP bar chart

Discord Easy Leveling provide a quick and easy way to generate a chart image of levels in a guild

We will start by creating a discord.js bot

const { Client, Intents } = require('discord.js')
const client = new Client({
    intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES]
})
const config = {
    TOKEN: 'sUp3r-s3Cr31-t0K3n',
    PREFIX: 'your prefix'
}
client.login(config.TOKEN)

We can then add discord easy leveling to it (I won't go over much of this part as you can read the readme)

const { Client, Intents, MessageAttachment } = require('discord.js')
const client = new Client({
    intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES]
})
const { EasyLeveling } = require('discord-easy-leveling')
const config = {
    TOKEN: 'sUp3r-s3Cr31-t0K3n',
    PREFIX: 'your prefix'
}
const options = {
    startingXP: 0,
    startingLevel: 1,
    levelUpXP: 100,
    database: 'sqlite'
}
const leveling = new EasyLeveling(client, options)
client.leveling = leveling
client.on('ready', () => {
    console.log(client.user.tag + ' is ready!')
})
client.on('messageCreate', (message) => {
    if(message.author.bot) return
    client.leveling.addLevels(message.author.id, message.guild.id, message.channel.id)
})
client.leveling.on('UserLevelUp', (newLevel, lastLevel, userId, guildId, channelId) => {
    client.channels.cache.get(channelId).send(`Congrats <@${userid}>! You have advanced to level ${newLevel}. Your old level was level ${lastLevel}`)
})
client.login(config.TOKEN)

We can now call the generate chart function to generate a chart with discord easy leveling

client.on('messageCreate', (message) => {
    if(message.author.bot) return
    client.leveling.addLevels(message.author.id, message.guild.id, message.channel.id)
    if(message.content === '!chart') {
        const chart = await client.leveling.generateXPChart(message.guild.id, 5) // will return a buffered image
        // check the docs https://discord-easy-leveling.js.org/EasyLeveling.html#generateXPChart for more info on the parameters
        const attachment = new MessageAttachment(chart, 'chart.png')
        message.reply({
            files: [attachment]
        })
    }
})